Amazon Connectでオフィスの電話を仮想化する
オフィスの電話をどうにかしたい!
いまロイロの横浜オフィスでは一般家庭と同じように普通の電話(ひかり電話)を使っています。
電話は、番号を知っているだけで誰でもかけられますよね。
アカウント登録やお友達申請が必要だったりするSNSより手軽です。
でも、電話してきている人が本当にその人なのか確かめる方法がない、かける側の都合で受信側の時間が奪われてしまう、オフィスにいないと受け取れないなど、古い仕組みがゆえに現代の働き方と合わなくなってきていると感じていました。
もっと現代的にできないかなーということで、Amazon Connectを使って電話の仮想化に挑戦してみました。
Amazon Connectって?
AWSのサービスの1つで、コンタクトセンターのシステムをクラウド上で簡単に構築運用できるシステムです。
電話番号を取得して、自動応答や他のサービスと連携させたり、Lamdaとかも使って頑張れば何でもできそう。
Webサービスなので電話の送受信はWebページから行います。
現状の回線
光電話x3(電話x2, FAXx1)
オフィスへかかってくる電話の種類と割合(ざっくり印象ベース)
LNSのサポート電話 25%
LNSの販売会社からのお問い合わせ 25%
弊社の営業宛ての電話 20%
LS2のお問い合わせ 5%
営業電話 20%
その他 5%
実現したい
営業電話撃退
営業宛て電話を営業の携帯へ転送
名刺に携帯番号の方が大きく書いてあるのに、なぜか代表番号に電話して取り次いでもらおうとする。
サポート時間外や担当が不在時の電話をメールへ誘導したい
Amazon Connectの基本構造
Amazon Connectは、大規模なコンタクトセンターでの利用を想定されているようで、それらになじみがない人にはわかりずらい構成をしています。
全体的な構造はこんな感じ。
電話番号
電話番号ごとに問い合わせフローを設定する
インバウンド(入電のこと)のフローを設定
問い合わせフロー/IVR
自動応答などのフローチャートを作ります。このフローチャートを電話番号に設定します。
自動応答は、Amazon pollyを使ったテキスト読み上げが一番手軽です。wavも使えるので声に自信があれば録音してもいい。
キュー
対応できる人間の列のこと
キューに受付可能な人がいたらキューへ転送みたいな感じにすると
ルーティングプロファイル
複数キューを複数人で対応する場合の優先度を決める仕組みぽい。たぶん、一般オペレーターかマネージャークラスかみたいなやつ。今回は必要なさそう。
プロンプト
音声合成だけではなくwavも使える。保留中の音楽もプロンプトに予めアップロードしておく。
Amazon Lex
AI Botとの連携もできるが、日本語対応時期は未定だそう。
DTMF
自動応答でよくある、「Aなら1を、Bなら2を押してください」ってやつ。
「顧客の入力を取得する」ノードの別の条件を追加から、1や2と入力する。
https://gyazo.com/5846f4285920def30dd48948ffb3591ahttps://gyazo.com/732251ee99505257ae3d1ee0accad58a
クイック接続
よく発信する電話番号を登録しておくもの。連絡帳的な。
転送先もクイック接続に登録しておかないとダメらしい。外電番号のみなので、転送先ごとにキューを作る感じ。
キューにも登録しないとCCPに表示されないので要注意
slack連携はLamda使う
最近始まったAWS Chatbotは、そういうサービスではなかった。
CMSを電話番号で検索して入電時にSlackに書くようにしたら結構いい感じ。
Lamdaとnode.jsの勉強になった。
ボイスメッセージ
音声録音が人が出た後しか動かないみたいで、小細工が必要。
具体的には、デスクフォンの電話番号をAmazon Connectの外電番号にしてループバックして…みたいなことをするみたい。
ややこしすぎてヤダ。
コールバックキュー
最近のコンタクトセンターの、いま対応できる人がいないからコールバックしますってやつだと思われる。
コールバックもSlackに書くので今回は利用しない。
使える電話番号
080-
0120-
料金はどちらも同じ。いわゆるフリーダイアル。080でもフリーダイアル。
050-
料金は圧倒的に安い。フリーダイアルではないので発信者側に通信料がかかる。
料金
電話番号の時間課金+通話料の従量課金制
フリーダイアル (0120, 080)
電話番号の時間課金
だいたい1600円/月/電話番号
通話料(日本国内)
受信 16円/分
発信 11円/分
DID (050)
電話番号の時間課金
だいたい300円/月/電話番号
通話料(日本国内)
受信 0.33円/分 (発信側は料金取られる)
発信 11円/分
設計
自動応答の番号で選ぶ場合は、ツリーを深めして、2択を繰り返した方が速いかも。何番が何と聞く時間が長いので。
現在の代表電話の番号は、すでに各種名簿に乗っちゃってるので営業電話がかかってくる
いまの代表番号をボイスワープで、Amazon Connectの番号へ転送
番号応答で選んでもらう
1. ロイロノート・スクールに関するお電話
1. 使い方のサポート
サポートの問い合わせフロー
長時間対応できる人いない
メールを案内
いまいるけどビジー、離席
コールバックをSlackへ
2. 導入に関するお問い合わせフロー
担当営業宛て
誰宛てか選んでもらって、Slackへ投稿。コールバック。
その他、導入に関するお問い合わせ
サポート問い合わせフローへ
3. お支払に関するフロー
電話転送
2. その他の内容のお電話
1. 商品のご紹介など営業のお電話
メールで送ってと誘導
2. その他 弊社へのお問い合わせ
電話転送
サポート用の番号は別に用意し、その番号をサポート用のWebなどで案内
0120-...
サポート用お問い合わせフローへ直接接続
導入に関するお問い合わせ番号も別に用意してもいいかも
0120-....
導入お問い合わせフローへ
緊急用と普通の電話用に直通電話番号も用意する。
ToDo
聞き直すことがあるかもなので、一応録音する
祝日判定
Slack投稿
WebhookへPOSTがセキュリティ的には良さそう
CRM連携
電話がどこからかかってきたのか調べてあげてもいいかも。
キューにたまった時の対処
キューの数によって、返答をかえる?
Amazon Connectのハマりポイント
フロー内では、最初に設定ノードを作って設定を行う。(自動応答の言語や、保留中のフローなど)
「音声の設定」で日本語-TakumiかMizukiに変えないと日本語の読み上げしてくれない。
フローでは、エラーを含めてすべてのブランチ(分岐)の線を繋がないと公開(利用)できない。
(フローのライン描画のアルゴリズムがよくないので、すぐにスパゲティ状態になってしまう…)
フローの編集画面は、保存せずにリロードするとさくっと消えるので要注意。
お問い合わせフロー以外の謎のフローが、どこかで実行される…
Default ~フローは自動で読みだされてしまう。これの内容を変更するの。
お問い合わせフロー内で明示的にフローを変更できる。保留フローの設定、顧客キューフローの設定、ウィスパーフローの設定。設定しないとDefaultが呼ばれる
フローには、これらのタイプがあって、タイプを選んでからフローを新規作成する。
入電を受けた後、ボタンを押してAfter Call workから抜けないのと、次の受信可能にならない。
いま対応可能なエージェントの数は、メトリクスの取得から取れる
$.Metrics.Agents.Available.Count
$.Metrics.Agents.Staffed.Count
Lambdaにはどうやってパラメータを渡すか
ノードでkey-valueを設定できる。
lambda関数のevent引数にjsonとして渡される
LambdaがConnectのフローでErrorになる。でも実行されてる。
SlackのWebhookへのメンションは、内部user id、group idを使う。
group id はAPIからしか取れない
user idはプロフィールページからとれる
お問い合わせ属性の設定と使用
お問い合わせ属性=発信元の電話番号など、そのお問い合わせに関するデータのこと
フローの途中で、変数(お問い合わせ属性)へ値を設定して、他のブロックから使用できる
$.Attributes.変数名 で使用可能。
クイック接続に表示されない
アウトバウンドで使うキューに、どのクイック接続先を使うかもう一段回設定がある。
プロンプト(自動応答で使う音声)の音質
wav形式のみ対応
内部的に8khzに変換されるぽい。
16khz以上のwavをそのまま突っ込んでいると、息など高周波成分がつぶれてディストーションみたいになる。
予め音声ソフトなどで、8khzに変換したりローパスフィルタかけたりしておいた方がいい。
これ学校でも使えない?